#!/bin/bash
chara="Hello"
charb="hello"


if [ $chara = $charb ]
then
    echo "字符串a和字符串b相同"
else
    echo "字符串a和字符串b不相同"
fi

echo "---------------------------"

if [ $chara != $charb ]
then
    echo "字符串a和字符串b不相同"
else
    echo "字符串a和字符串b相同"
fi

echo "---------------------------"
#检测字符串长度是否为0，为0返回 true。
if [ -z $chara ]
then
    echo "字符串a长度为0"
else
    echo "字符串a长度不为0"
fi

echo "---------------------------"
:<<EOF
在 Bash 脚本中，使用双引号将变量括起来是一种常见的做法，特别是当你要在测试条件或其他命令中使用变量时。这样做有几个原因：

‌防止单词拆分‌：当 Bash 遇到未加引号的变量时，它会根据 IFS（内部字段分隔符，默认为空格、制表符和换行符）将变量的值拆分成多个单词。这可能会导致意外的行为，特别是当变量的值包含空格或其他特殊字符时。使用双引号可以防止这种拆分。

‌保留变量中的特殊字符‌：双引号内的特殊字符（如 $, *, & 等）不会被 Bash 解释或替换，它们会作为普通字符保留下来。这对于在命令中嵌入变量值非常重要，因为你可以确保变量的完整内容被正确处理。

‌处理空变量‌：当变量为空时，未加引号的变量会导致命令语法错误，因为 Bash 会尝试将空值作为命令的一部分来解析。加上双引号后，即使变量为空，Bash 也会将其视为一个空字符串，从而避免语法错误。

在 [ -n "$charzero" ] 这个测试条件中，双引号的使用确保了以下几点：

如果 charzero 为空，测试命令仍然能够正确执行，而不会因为空值而导致语法错误。
如果 charzero 包含空格或其他特殊字符，这些字符会被正确处理为变量值的一部分，而不会被拆分或解释。

因此，即使 charzero 是一个空字符串，使用双引号也是推荐的做法，因为它提供了更好的安全性和可靠性。这样，无论 charzero 的值是什么，[ -n "$charzero" ] 都能正确地评估其是否为非空。如果 charzero 为空，测试将返回 false；如果 charzero 非空（即使只包含一个空格或其他特殊字符），测试将返回 true。
EOF

#检测字符串长度是否不为 0，不为 0 返回 true。
charzero=""
if [ -n "$charzero" ]
then
    echo "字符串========"
else
    echo "字符串--------"
fi

zero=""  # 设置 charzero 为一个空字符串

if [ -n "$zero" ] 
then
    echo "charzero is not empty"  # 这行不会被执行，因为 charzero 是空的
else
    echo "charzero is empty"      # 这行会被执行
fi
